package org.blogwu.learn.designpattern.chapter10.v2;

/**
 * 业务场景：
 * 在网上兑换了一个积分礼物，兑换流程分为
 * 1. 积分校验，校验积分是否足够兑换礼物
 * 2. 兑换逻辑。此逻辑可能比较复杂，比如扣减积分，查看礼物库存是否充足等
 * 3. 物流逻辑，打包礼物到快递。并返回订单号
 * <p>
 * 这时候  如果进行服务拆分，拆分成了三个rpc服务， 这是要按顺序调用这三个接口
 *
 * @author hyf
 * @date 2018-10-25
 **/
public class Main {

    public static void main(String[] args) {
        // 外观模式
        //
        PointGift pointGift = new PointGift("Mac book pro 2018");
        GiftExchangeService giftExchangeService = new GiftExchangeService();
        // 正式开发情况下不需要手动去new，直接使用Spring 依赖注入
//        giftExchangeService.setPaymentService(new PointsPaymentService());
//        giftExchangeService.setQualifyService(new QualifyService());
//        giftExchangeService.setShippingService(new ShippingService());


        giftExchangeService.giftExchange(pointGift);
    }
}
